約 1,067,235 件
https://w.atwiki.jp/gdiplusplus/pages/33.html
1.使い方 2.バイナリ 3.readme 4.SS 5.履歴 本家版(最新のみ)stable version (gdi++20060927) 以下改良版(上に行くほど最新)gdi0261 (常駐GUI) gdi0147 (常駐 gdippManager) gdi0118 (gdi0116のバグ修正+おまけ改) gdi0116 (gdi0093のバグ修正+Pico氏(gdi0112)の縮小アルゴリズムを組み込み) gdi0112 (MMX対応など) gdi0110 (gdi0102 + 735Image) gdi0109 (up105のSSE無し版) gdi0107 (gdi0104-エンハンスフィルタの改良版-のバグ修正) gdi0105 (1bit+アルファブレンド(注 要SSE2、きわめて未完成)) gdi0102 (gdi0097の環境設定拡張版) gdi0097 (トレイ格納タイプのgdi.exe gdi0060+gdi0061) gdi0093 (ソースをシェイプアップ?20060923版相当に戻してみた) gdi0088 (サー(ry ) gdi0079 (20060927+allgdi+ExcludeModule+TLS その2) gdi0076 (gdi0075のズレるバグ修正) gdi0075 (20060927+allgdi+ExcludeModule+TLS) gdi0061 (gdi0029+GUI) gdi0060 (トレイ格納タイプのgdi.exe) gdi0052 (gdi0049 修正版) gdi0049 (gdi0025+194+ソース分割) gdi++20060929-enhance ( 104-106の修正) gdi0038 (エンハンサの修正 SSE2 Normal) gdi++20060928-enhance (バグ修正) gdi0031 (gdi++ GUI) gdi0029 (トレイ格納タイプのgdi.exe) gdi0027 (944 をベースにソースを整理してみた。) gdi0025 (gdi0021+953+951+最適化) gdi0023 (キャッシュ周りをマルチスレッド化) gdi0021 (最適化ビルド+いろいろ) gdi0019 (20060927版+バージョンリソース付きdll+ 730のallgdi++) gdi0018 (0017+version+allgdi) gdi0017 (gdi0004lzh+individualセクション有効化) gdi0016 (ICC9.1にてPGO付きビルドSSE2/Pentium4向け) gdi0012 (フォントごとにウェイト指定) gdi0011 (デバッグビルド) gdi0009 (PentiumM(Banias or later)) gdi0004 (sse2/pentium4用に最適化したもの) gdi++20060927-enhance (フィルタ修正版) アイコンicon 本家版(最新のみ) stable version (gdi++20060927) 本家のダウンロードページにて。 784 名前: ◆0x0D/0x20I 2006/09/27(水) 12 00 00 ID kdcoJI+4 GetTextExtentPoint32()が除外フォントでも処理していたのを修正 IsValidDC()関数を新たに作って、画面用のDCかどうかをチェックするようになった 印刷時に崩れる問題が解決しているかもしれない) 501氏によるソースの整理 狩野氏によるエッジ強調フィルタの搭載(Enhanceオプションが追加されています) gdi++.dllがGetMsgProc()をエクスポートする仕様に( 654氏= 168氏) デフォルトでFixedSysとMarlettを除外するようにしておく ここらへんで、とりあえずまとめておきました。サイトにうpしてるのは、ある程度stableなnightly build(今日はお昼だけど)って感じです。 大勢の人が関わってもらえるようになってきて、現状の流れで漏れのサイトにうpし続けるっていうのもちょっとアレだと思うし、そろそろライセンスとか権利の問題を明確にしておかなきゃいけないんだろうと思う。 779 779 名前:名無し~3.EXE 2006/09/27(水) 11 24 52 ID o91aaQSC gVimで表示がおかしくなります。 http //www.uploda.org/uporg529423.png 右は0924版で表示が崩れ、左は0926版(0925版も一緒)でAA効いてません。 フォントはMSゴシック10ポイント、設定はデフォルトのini、SSはVista RC1ですがXP SP2でも状況は同じでした。 他のアプリでは問題ないんですが・・・ うーん、スムージングが効いてないですかぁ。0924でズレってるってことはExtTextOutA周りの問題ってことだけど、うーん、XP以降のバージョンではオリジナルのExtTextOutAがExtTextOutWを呼ぶ計算になってるんだけど・・・ちょっとチェックしてみます。 780 780 名前:名無し~3.EXE 2006/09/27(水) 11 25 00 ID hvd1nGGx Sn でつくってみた。なにか設定が必要なら言ってください。 アクセス制限に引っかかることはないと思いたい。 ttp //free.flop.jp/gdi++/ うわ、ロダができてる。乙。 800 名前:名無し~3.EXE 2006/09/27(水) 14 39 27 ID a1jtWTIq 784 Firefoxで選択範囲がずれてる件( 758)は治りました。乙! ただ、textareaに入力してるとだんだんおかしくなる http //free.flop.jp/gdi++/src/gdi0003.png 888 名前:名無し~3.EXE 2006/09/27(水) 20 16 57 ID amHmqYMt 784 のバージョンだとEnhance=1以上にすると シャープネスノイズが出るようになってます。 20pt程度のフォントサイズで適用するとよくわかるかも。 個人的には1を基準とするなら0.2くらいの効果が好みです。 あと、Quality=4にすると対応していないマシンのせいか 適用したアプリが全て強制終了するように。。。 AllGdiで実行したのでOSを巻き込んで死亡(;´д⊂ スペッコ:WinXP SP2、AthlonXP、1024M 以下改良版(上に行くほど最新) 容量規制の為FreeType版は【gdi++.dll FreeType】のページへ移しました。 gdi0261 (常駐GUI) http //free.flop.jp/gdi++/src/gdi0261.zip gdippManager ver.1105 ver.1029 ベース 機能の変更点 ・GUIつけてみた ・DLL側の関数で代用できるケースはまずそちらを使うようにした ・細かい修正とか ・VS2005EEのプロジェクトつけた *.sln / *.vcproj ※GUI注意 ・セクションがない、キーがない、値がない(一部除く)項目は編集できず出力もしません 無条件に出力するとDLLが対応してないINI項目がふえちゃうから ・数値を自由に指定できる項目は-1~99で指定できます 「基本的には」DLL側で最小値/最大値に丸めてるので 実際にどの項目がどの値まで有効値とするのかあまり見てないです ・Individualセクションにダミーでもデータ入れておかないと、 新旧どっちの書式かわからないので警告出てうざいです ※FreeType版 ・そのうちに explorer.exe がハングするので事実上利用不能 右クリックメニューとかでハングする gdi0147 (常駐 gdippManager) http //free.flop.jp/gdi++/src/gdi0147.zip 692 名前:名無し~3.EXE 2006/10/28(土) 02 21 10 ID SN2pkdqO 常駐 システムディレクトリとexeサブディレクトリ内にある複数のDLLを管理できるようにした でもGUIは実装してない ※Studentがイチから書き直しているので利用は警戒しる gdi0118 (gdi0116のバグ修正+おまけ改) http //free.flop.jp/gdi++/src/gdi0118.zip 883 名前:168 2006/10/06(金) 10 09 12 ID iQtt8ZFA 868(gdi0116)で落ちるバグ取れたかも。__assume入れてたの忘れてた ついでにおまけに少し手を加えますた。 多重起動とかバージョン情報のハイパーリンクとかww gdi0116 (gdi0093のバグ修正+Pico氏(gdi0112)の縮小アルゴリズムを組み込み) http //free.flop.jp/gdi++/src/gdi0116.zip 868 名前:名無し~3.EXE 2006/10/06(金) 01 47 44 ID iQtt8ZFA 漸くデバッグ完了したのでとりあえず暫定版ビルドしてみますた 多分 644, 655, 659, 712あたりの修正とPico氏の 834ぐらい ってか日が経ちすぎて忘れたorz 644 名前:名無し~3.EXE 2006/10/01(日) 19 19 42 ID 2rzB94Gp とりあえずDrawStateもフックして強引に灰色テキストを描画できるようにしてみたけど、なんかイマイチ http //free.flop.jp/gdi++/src/gdi0098.png 639 漏れの環境だとそのアドレスには既にINDICDLL.DLLとかいうのが読み込まれててバッティングするけど 655 名前:名無し~3.EXE 2006/10/01(日) 22 05 23 ID 2rzB94Gp うpろだ100記念w 644のやつはアイコンとかが灰色で描画されてなかったので他の方法を模索してみた。 とりあえずDST_TEXTとDST_PREFIXTEXTは何とかなったけど、DST_COMPLEXはもうこれ以上無理のような気がしてきた http //free.flop.jp/gdi++/src/gdi0100.png 654 んーotfか・・・とりあえずDrawStateの問題が片付いたら調べてみます。 片付きそうにないけどorz 659 名前:名無し~3.EXE 2006/10/01(日) 23 01 51 ID 2rzB94Gp DrawStateとは関係ないけどこれ直してみますた。 http //free.flop.jp/gdi++/src/gdi0101.png これで1行下にズレてる系のバグは全部直ってるはず。 712 名前:名無し~3.EXE 2006/10/02(月) 22 44 45 ID dtRB8HD5 スタート→プログラムにあるIEのショートカットをgdi++.exeで開けない気がする あと理由は知らんけどダイアログがズレるバグとwin2kでメモリがreadに・・・のバグはなぜか出てない模様(環境によっては出てるかも) おまけフォルダにサービス化セットあり gdi0112 (MMX対応など) http //free.flop.jp/gdi++/src/gdi0112.zip 834 名前:Pico ◆PicoKHZGNI 2006/10/05(木) 07 47 55 ID 3uBaMu8k 意外とMMX版に需要が有るようなので作成してみました。 Qualityをちゃんと読むようになりました。 Quality=7 の時のみSSE2やMMXを使用します。 それ以外(0~6,11,15)の場合は、Cのコードで動きます。割と遅いですorz MMXに対応しました。いやぁ命令の名前が共通ってのは便利だな。 デフォルトではSSE2以上向けのgdi++.dllが入っているので、 MMX対応CPUならmmxフォルダ、そうでないならgenericフォルダの物と置き換えてください。 ズレとかはまだ全然直っていないはず。 gdi0110 (gdi0102 + 735Image) http //free.flop.jp/gdi++/src/gdi0110.zip 832 名前:名無し~3.EXE 2006/10/05(木) 02 36 25 ID qwK8X3LA 常駐Manager とりあえずプレビュー機能と適用ボタンまでINI処理を結構書き換えてしまったのでINIに保存されてねーぞゴルァ! みたいなのがあったらごめん 735に触発されて作ってたんだけど今の今まで要旨が "プレビュー" のほうだと思ってたせいで "Managerだけに適用" をすっ飛ばしてました( A`) 735 名前:名無し~3.EXE 2006/10/03(火) 16 36 33 ID U1YlA+Z8 gdippMangager.exeに適用ボタン、またはgdippManager.exeだけに変更を加えてプレビューできる機能とか出来ないかな? こんな感じに http //free.flop.jp/gdi++/src/gdi0103.png まだ全体をころころ変えてるとエラー出る場合があるのであったらいいなというだけです gdi0109 (up105のSSE無し版) http //free.flop.jp/gdi++/src/gdi0109.zip 825 名前:369 2006/10/05(木) 00 32 32 ID KJEE4Gl9 778 SSE使わないようにしてみたが動くか? 縮小が3倍、全体で見ると1割ぐらい遅くなってるけど。 gdi0107 (gdi0104-エンハンスフィルタの改良版-のバグ修正) http //free.flop.jp/gdi++/src/gdi0107.zip(gdi0104のバグ修正版) http //free.flop.jp/gdi++/src/gdi0104.zip(エンハンスフィルタの改良版) 766 名前:67 2006/10/04(水) 02 49 30 ID vnJAecEO エッジ強調フィルタの改良版をアップローダに上げました。今回は、文字のいちばん外側のピクセルにはフィルタを掛けず、内側にはきっちり今まで通りの処理を施すようにしてあります。 ベースバージョンは公式の20060927です。 754 754 名前:名無し~3.EXE 2006/10/03(火) 22 26 21 ID ylMzz5mE すまん、アイデアだけ。 ①現状の単純平均から重みつき平均を使う。 111 141 111 これでもやっと感を減らしつつ、出すところは出す。どんなフィルタがいいんだろ? ②現在の平均を取る部分の変わりに、ルックアップテーブルを作る。 LUT[0-256*16] データサイズはせいぜい もしガンマ補正が必要ならば、LUT上にかける。 これで除算が無くなるから、そこそこ二次キャッシュがあればスピードも上がる? 縮小時に重みつき平均を取ると、同じ太さの線が(縮小後の)ピクセルのまん中にある時と橋にある時で濃さが変わってしまうのが難点です。2つのピクセルの境界に沿って線が引かれているような時は、片方のピクセルにかかっている分を無視して、隣のピクセルに足し込んでやると文字全体の濃さが変わらずにコントラストが改善できるんですが、とても重い処理になりそうです。 755 755 名前:名無し~3.EXE 2006/10/03(火) 22 43 03 ID EozvE0/P ラプラシアンフィルタを使ったシャープネスフィルタがいいかも laplacian 0 1 0 1 -4 1 0 1 0 double rate = /* 0.0 - 1.0 */; double result = cm- i() - rate*(ct- i() + lm- i() + rm- i() + cb- i() - 4*cm- i()); 今までのフィルタがまさにラプラシアンをめんどくさいやり方で実装したものです。-1 2 -1 のフィルタを縦横にかけて中間結果を別々に持ち、最後に総和を取っています。 758 758 名前:名無し~3.EXE 2006/10/03(火) 23 53 17 ID PbXGshjl 754 ルックアップテーブルは考えた。 描画エリアの背景を拡大してフォントレンダラに送り込んで描画後に縮小だ。 白地に黒とかなら問題ないんだが、ガンマ補正入りルックアップテーブルなぞ使ったら背景の影響を受けるし、文字の背景画像にも影響を与えるんだなコレが。 常に白黒で書いて好きにガンマ補正をかけてから、背景との合成は自前で計算したほうがいいかも。8倍に拡大描画すれば、1の立ったビットの個数を表引きで求められるので、それなりに速く実装できそう gdi0105 (1bit+アルファブレンド(注 要SSE2、きわめて未完成)) http //free.flop.jp/gdi++/src/gdi0105.zip 770 名前:Pico ◆PicoKHZGNI 2006/10/04(水) 07 11 53 ID hsbLqC/N 0079版をベースにして、1bitで8x8倍で描画して、アルファブレンドさせてみました。 SSE2を使った縮小アルゴリズムを書いてみたら、かなり軽くなった気がするので、まだアルファ版以下の完成度ですが、良かったら試してみてください。 注意 △とても未完成です。 △Quality、Enhanceの値は無視しています。 △8*8なので64階調です。 △SSE2専用です。 △かなり大量にコードが変更されています。新しいバグが入っているかも。 gdi0102 (gdi0097の環境設定拡張版) http //free.flop.jp/gdi++/src/gdi0102.zip 708 名前:名無し~3.EXE 2006/10/02(月) 22 00 24 ID WNYntwRQ guiで環境設定のExcludeModuleとIndividualにも対応してみました。 機能の変更点 ・環境設定のExcludeModuleとIndividualにも対応 ・Weightの最大値をとりあえず32に変更 ソースの注釈 ・個人的にリソースいじるのにVC6を使うので、それ用のプロジェクトファイルも追加。 ・INIパラメータ用の変数を動的に取得して、設定後解放するようにした。 ・他いくつか細かい修正。 gdi0097 (トレイ格納タイプのgdi.exe gdi0060+gdi0061) http //free.flop.jp/gdi++/src/gdi0097.zip 630 名前:名無し~3.EXE 2006/10/01(日) 16 49 31 ID h1TSe0i6 常駐gdi 60(gdi0060)ベース+61(gdi0061)のGUI 基本的にはくっつけただけだけど変更点は/***/で検索してたどってね あとVSEEならプリコンパイル済みヘッダ機能使えるファイル構成にした gdi0093 (ソースをシェイプアップ?20060923版相当に戻してみた) http //free.flop.jp/gdi++/src/gdi0093.zip 508 名前:名無し~3.EXE 2006/10/01(日) 02 47 10 ID 2rzB94Gp 501 501 名前:名無し~3.EXE 2006/10/01(日) 01 37 31 ID 9nVDSxVX 0922改造版レベルまでソースをシェイプアップしたまへ ソースをシェイプアップ、の意味が判らんが とりあえず20060923版相当に戻してみた ここ最近の追加機能が全く使えんけどソースは見やすくなったと思うw 20060923版と比べて 20060927版までのバグ修正 Jane Doeなどでズレるバグ修正 UseSubPixel=1のときは常にサブピクセルレンダリング ビットマップフォントは常にExclude キャッシュ、TLS 使えるもの Quality Weight UseSubpixel SubpixelDirection Exclude 使えないもの Enhance MaxHeight ForceAntialiasedQuality ExcludeModule SSE2、SSE3用縮小ソース allgdi++、gdiなど常駐機能全て gdi0088 (サー(ry ) http //free.flop.jp/gdi++/src/gdi0088.zip 412 名前:名無し~3.EXE 2006/09/30(土) 17 39 32 ID 4i2JaSpG http //free.flop.jp/gdi++/src/gdi0081.png むしゃくしゃしたのでやった。今も反省していない。 確認環境:win2k on VMware Playerのみ gdisetup.exeを実行すると登録できる 削除する時もgdisetup.exeを使用する これとallgdi++.exe、gdi.exe等を併用したときの動作は無保証 付属のgdi++.dll以外での動作も無保証 何が起こっても一切無保証 gdi0079 (20060927+allgdi+ExcludeModule+TLS その2) http //free.flop.jp/gdi++/src/gdi0079.zip 中身は多分20060927+allgdi+ExcludeModule+TLSぐらい ズレるバグ修正(OpenJaneDoe、part2 82で確認、それ以外は不明) ビットマップフォントはExcludeの設定に関わらず強制的にExcludeする gdi++、allgdi++相当の機能をdllに内包 gdi++.exe経由で起動したらExcludeModuleは読み飛ばすようにした IMPL_ExtTextOutWをいろいろ整理 UseSubPixel=1のときQualityの設定を無視(Quality=2とみなす) TLS周りでメモリリークしてたのを修正 StringHashのignoreCaseの動作が逆だったのを修正 gdi++ gdi++.exe又はgdi++.vbsを使うと従来通りの動作 以下のコマンドも利用できる rundll32.exe "gdi++.dll",GDIPlusPlus_RunDLL file argument ... allgdi allgdi++.vbsを実行すると起動中の全プロセスにgdi++.dllが読み込まれる allgdi+p.vbsで常駐モード(もう一度実行すると常駐解除) それぞれ以下のコマンドを実行しても同じ事が得られる rundll32.exe "gdi++.dll",AllGDIPlusPlus_RunDLL rundll32.exe "gdi++.dll",AllGDIPlusPlus_RunDLL -p ExcludeModule allgdi++使用時のみ有効。特定のプロセスにgdi++.dllを読み込ませなくする Exclude"Process"ではないので↓とかも可能 [ExcludeModule] hogehoge.dll gdi0076 (gdi0075のズレるバグ修正) http //free.flop.jp/gdi++/src/gdi0076.zip 384 名前:名無し~3.EXE 2006/09/30(土) 12 26 57 ID 4i2JaSpG 350(gdi0075)でズレるバグ修正 UseSubPixel=1のときQualityを無視 チラシの裏 ズレるバグって浮動小数点の丸め誤差かよorz /チラシの裏 gdi0075 (20060927+allgdi+ExcludeModule+TLS) http //free.flop.jp/gdi++/src/gdi0075.zip 350 名前:名無し~3.EXE 2006/09/30(土) 01 01 43 ID 4i2JaSpG 今日のGDI++w 中身は多分20060927+allgdi+ExcludeModule+TLSぐらい ズレるバグ修正(OpenJaneDoe、GreenPad、 82で確認、それ以外は不明) 82 名前:名無し~3.EXE 2006/09/28(木) 08 56 41 ID 75MYieLo OpenJaneDoeのソースを元にして描画がズレるのを再現してみました。 時間のある人はこれ使ってgdi++.dllをデバッグしてください。 http //free.flop.jp/gdi++/src/gdi0032.zip ビットマップフォントはExcludeの設定に関わらず強制的にExcludeする gdi++、allgdi++相当の機能をdllに内包 gdi++.exe経由で起動したらExcludeModuleは読み飛ばすようにした IMPL_ExtTextOutWをいろいろ整理 ソースは付けていません(弄りすぎたし派生バージョン多すぎてpatch作っても意味無さそう) が、漏れにソースくれればpatchをマージして送り返しますw gdi0061 (gdi0029+GUI) http //free.flop.jp/gdi++/src/gdi0061.zip 296 名前:名無し~3.EXE 2006/09/29(金) 18 26 49 ID Thxs4ylL Win32SDK でGUI作ってみた。 ベースはgdi0029 こういうのへの参加が初体験でドキドキ・・・ gdi0029.zip をベースにINIファイル用GUIを追加。 名前もgdipp.exeに変更しました。 メニューの「INIファイルを開く」を「環境設定...」に変更 ダイアログが開いて、各設定値を変更できます。 対応しているのは基本的にstable版のもの。 *[Exclude]セクションは一度クリアしてから追加しているため、途中にコメント行があっても消えてしまいます。 OKボタンでダイアログを閉じると、新しい設定値でINIファイルを更新します。 更新内容を反映するために gdi++のフックをやり直しています。 *このやり直し方がこれで問題無いかは、今いち自信無かったり・・・ gdi0060 (トレイ格納タイプのgdi.exe) http //free.flop.jp/gdi++/src/gdi0060.zip 267 名前:名無し~3.EXE 2006/09/29(金) 15 47 40 ID uT1dBezs 264 お疲れさんです gdi.exe(ちなみに常駐ソース起こしたのは前スレ742:◆0x0D/0x20I氏 とりあえずDLLのバージョンが表示できたり DLL読んでないときに操作できるようにしてみた gdi0052 (gdi0049 修正版) http //free.flop.jp/gdi++/src/gdi0052.zip 215 名前:555 2006/09/29(金) 03 46 30 ID l/FxUuFO 207, 209 207 名前:名無し~3.EXE 2006/09/29(金) 02 00 58 ID S45t8QPf ExcludeModule効かないです。ウィルスソフトの数個のプロセスがunlockerでもロック解除出来なくて、再起動するまでロックしたままなので死活問題なんです。 209 名前:名無し~3.EXE 2006/09/29(金) 02 15 53 ID ad2vtG2/ 206のはgdi0025ベース(ExcludeModule効かない)だからかな。 Enhanceはいい感じになりますた。メニュー部分がおかしくなるけど…。 207 普通にD Dとかで、指定アプリのみ++適用で我慢するしか。 一度allgdiやっちゃったら病み付きになるのは仕方ないけどw ExcludeModule修正しました。 Excludeも148のを取り込んでみた。 148 名前:名無し~3.EXE 2006/09/28(木) 18 06 00 ID +FMMBxuw ほかにもビットマップって結構あるんだね [Exclude] メイリオ Meiryo Marlett System FixedSys Modern MS Sans Serif MS Serif Roman Small Fonts Script Courier 218 名前:名無し~3.EXE 2006/09/29(金) 10 56 30 ID 2RRtMqFQ 215 Quality=1 のとき Enhance= を1以上にすると落ちる。 あと、void Cache ProcessTerm() で voidなのにreturnがあると怒られる。 gdi0049 (gdi0025+194+ソース分割) http //free.flop.jp/gdi++/src/gdi0049.zip 206 名前:555:2006/09/29(金) 01 51 55 ID l/FxUuFO gdi0025.lzh をベースに 194(gdi++20060929-enhance) を取り入れてソースを分割したもの 一応、SSE, SSE2 版付き。PGO 下のは無いです。 後の修正は builderscomment.txt 参照のこと 余計なお節介だったらごめん。これにてたぶん名無しに戻ります。 gdi++20060929-enhance ( 104-106の修正) http //khdd.net/kanou/kangae/2006/gdi++20060929-enhance.zip 194 名前:67 2006/09/29(金) 00 45 24 ID b1ozCFz3 104-106 104 名前:名無し~3.EXE 2006/09/28(木) 12 49 39 ID czObJZg9 http //free.flop.jp/gdi++/src/gdi0035.png 別なバグが発生したようです 105 名前:名無し~3.EXE 2006/09/28(木) 12 49 48 ID 4Y3odhPr 103 選択文字列がおかしくなってます。 106 名前:名無し~3.EXE 2006/09/28(木) 12 50 54 ID Ojx0uxHz 104 ファミコンゲームの画面かと思った。 修正しました。 背景が透明な場合をちゃんと区別するようにしたので、これで直ったはずです。Enhance 有効のときだけ出るバグはもうないという希望的観測を持っております。 あとは画質の改善 (今は o が八角形ぽく見える) や高速化を考えていきたいと思っております。では。 199 名前:名無し~3.EXE 2006/09/29(金) 01 04 15 ID F1gcbA5c 194 Live2ch でぐりぐりスクロースしてもレインボーカラーがでなくなった.GJ! Enhance = 0 と Enhance が1以上のときでメニューバーの表示がグレーアウトしているときの品位が結構違うので今後の課題として取り組んでほすい gdi0038 (エンハンサの修正 SSE2 Normal) http //free.flop.jp/gdi++/src/gdi0038.lzh 164 名前:名無し~3.EXE 2006/09/28(木) 22 16 08 ID rkTHKpkV amd系のcpu使ってる人はnormalだとふつーにうごくかも (buiderscommentより) 今回は2つ作ってみました。 エンハンサの修正をとりこんでます。 sse2ディレクトリにはいってるのはicc9.1でsse2持ってるプロセッサに対して最適化してます。 normalディレクトリに入ってるのはvc8.0でふつうに最適化かけたやつです。 (付属gdi++.iniより) generalセクション 基本機能の設定をします excludeセクション 適用しないフォントを列挙してください。たぶん32フォントまで individual(仮)セクション 列挙されるときのフォント名を正確に書かないとだめっぽい スペース入ってるのはめんどいね。 ウェイトを指定するフォントを列挙してください。たぶん32フォントまで excludemoduleセクション allgdi+p.exeを使用する際にインジェクションしないプロセスを列挙してください。たぶん32プロセスまで。 gdi++20060928-enhance (バグ修正) http //khdd.net/kanou/kangae/2006/gdi++20060928-enhance.zip 67 名前:前スレ672 2006/09/28(木) 07 18 19 ID SkKHpb6+ 修正版できました。 バグが出ないことを最優先にして修正しました。 バグ「レインボーエフェクト」を修正 (ビットの並びが BGR なのを RGB と勘違いしていた) static な配列を書き換えるのをやめ、比較演算を行うようにした (そのぶん遅い) 色情報が正しく取れていない (前景色と背景色が同じ) 場合、出力色空間の制限をオフ。 Enhance の設定できる値を 0~9 に増やし、全体に弱くした。 サイズによってエッジ強調の強さを変える小細工をとりあえず停止した。 gdi0031 (gdi++ GUI) http //free.flop.jp/gdi++/src/gdi0031.lzh 58 名前:名無し~3.EXE 2006/09/28(木) 04 21 05 ID drc9K0aW 即席GUI gdi0029 (トレイ格納タイプのgdi.exe) http //free.flop.jp/gdi++/src/gdi0029.zip 45 名前:名無し~3.EXE 2006/09/28(木) 02 43 34 ID SlyLH6Ox 17 17 名前:名無し~3.EXE 2006/09/28(木) 01 07 38 ID NR4yXAMz 常駐のgdi.exeからiniの設定が出来たら素敵。 アイコンがいい感じなので、もうちょっと発展して欲しいなぁ… DLLディレクトリを開く・INIを開く・ダブルクリックで有効/無効を切り替え を追加 新規に加工したところは /***/ 555氏みたいにバージョン情報埋め込もうかとおもったけどVSEEだとリソース生成できないのよね gdi0027 (944 をベースにソースを整理してみた。) http //free.flop.jp/gdi++/src/gdi0027.zip 43 名前:555 2006/09/28(木) 02 31 14 ID VpFSBTN6 前スレ944(gdi0021) を元にソースを分割したりいろいろしてみた。 もしよければ取り入れてください。arch SSE, arch SSE2 指定のビルドも添付しました。 944(gdi0021)のソースを元にソースファイルを分割整理。 Cache, Settings をクラス化。グローバル変数 →クラスの static 変数 ってだけです。 Quality の上限、下限チェックを修正。 リソースファイルの取り込み malloc/free → new/delete[]、memcpy → ZeroMemory Makefile にリソースファイルのコンパイル、リンクを追加 Makefile に VisualC++ 8 による SSE / SSE2 最適化を追加 Intel C++ Compiler 用のソース、Makefile を分離(ICC 持ってないので未確認) make 用のバッチファイルを添付 111 名前:名無し~3.EXE 2006/09/28(木) 13 38 13 ID yQRtr3PG gdi0027のGDI++.DLL(2006/09/28 02 27)をLive2chでうごかしてみた http //free.flop.jp/gdi++/src/gdi0036.png 設定は以下のとおり。 [General] Quality=3 Weight=8 Enhance=2 MaxHeight=0 UseSubpixel=1 SubpixelDirection=0 ForceAntialiasedQuality=1 [Exclude] FixedSys Marlett メイリオ Meiryo [Individual] [ExcludeModule] 環境 PenM + Xp SP2 + RADEON X300 + 2048x1536モード gdi0025 (gdi0021+953+951+最適化) http //free.flop.jp/gdi++/src/gdi0025.lzh 40 名前:前スレ801 2006/09/28(木) 02 13 32 ID rkTHKpkV 33 もうやっちゃった・・・ 33 名前: ◆0x0D/0x20I 2006/09/28(木) 01 58 20 ID fkDxjKfA Osakaフォントスレで、へた字を移植する予定だったけど、だいたい道筋がついて、BDFエディタを作りかけて放置してあることに気づいた。最近、そっちの方がむしろ気になってる漏れがいる。 ま、そっちは置いといて、今のgdi++.dllの当面の目標は、 ・ズレ修正(結構厄介そうな悪寒) ・allgdiを仕上げて同梱 ・縦書き対応 だいたい、これくらいかな?最適化の問題は付いて回ると思う。エッジ強調やガンマ補正である程度の品質向上は望めるだろうけど、劇的な変化はちょっと難しいだろうから、今のgdi++.dllが一段落ついたら、FreeType2を使ってレンダリングする方向で逝くべきかもしれない。あくまでこれは妄想だけど( A`) 後で前スレ 944(gdi0021)と 951(gdi0023)をマージさせて頂いて、サイトにうpしておきます。 28 むしろ、たいした設定項目もないから、GUIを用意してもいいんじゃないかな。 VBで良ければパパッと作れるけど、SDKはマンドクセ( A`) 前スレ944(gdi0021)に前スレ953の再修正を加えました。 また、前スレ951(gdi0023)のスレッドローカルストレージパッチを取り込みました。 P4+SSE2, later or compatible processor向け最適化(w/PGO) お休みなさい __o_ SSE2に最適化されてるかわからないビルド 今回もPGOしました。 スレの 881(gdi0018)さんのパッチ見てこちらのビルドにもGetMsgProc()を追加しました。 ExcludeModuleセクションパッチを取り込みました。 プロファイル取ったときの設定はこんな感じです。 [General] Quality=3 Weight=1 Enhance=0 MaxHeight=0 UseSubpixel=0 SubpixelDirection=0 ForceAntialiasedQuality=1 流し読みしかしてないんだけど、enhancerで unsigned char を signed char にキャストしてる箇所があった。 いいんだろうか。 あと、勝手にソース分割しちゃいました。 分割したソースについては /src 以下をご覧ください。 不都合があればどんどん戻しちゃってください。>関係各位 gdi0023 (キャッシュ周りをマルチスレッド化) http //free.flop.jp/gdi++/src/gdi0023.zip 951 名前:名無し~3.EXE 2006/09/27(水) 23 46 43 ID A4syXu0J キャッシュ周りにTls~系を使用して複数スレッドからの非同期アクセスを可能にしました。 デュアルコア環境とかでallgdi++使ってると軽くなってるかも。 20060927版がベースなのでExcludeModuleとかはありません。 gdi0021 (最適化ビルド+いろいろ) http //free.flop.jp/gdi++/src/gdi0021.lzh 944 名前:801 2006/09/27(水) 23 30 01 ID UQWYzagB 疲れた・・ Pentium4(SSE2もち)以降用に最適化(w/PGO)しました。 784の本家ベースに、 790(gdi++20060927-enhance)さん、 833(gdi0012)さん、 881(gdi0018)さんのallgdi++.exe向けGetMsgProc()実装、 891(gdi0019)さんの[ExcludeModule]セクションパッチを取り込みました。 さらっと動作確認しただけなので、完動するかは保証しません・・・ gdi0019 (20060927版+バージョンリソース付きdll+ 730のallgdi++) http //free.flop.jp/gdi++/src/gdi0019.zip 891 名前:名無し~3.EXE 2006/09/27(水) 20 37 08 ID A4syXu0J 一応20060927版にバージョンリソース付きdllと 730のallgdi++をセットにした パッケージを作ってみますた。 746 746 名前:名無し~3.EXE 2006/09/27(水) 02 34 00 ID kdcoJI+4 743-744 http //drwatson.nobody.jp/gdi++/tray_allgdi2.zip とりあえずそこだけ直したけど、基本的に書き殴りっぱなしのとりあえず動くってゆーコードなので、人様には見せられないクオリティですし、なんだかallgdiの作者さんにも申し訳ないですが・・・ ㌧でもないです。漏れがタスクトレイ常駐にしなかった理由は、単にpcがXGAにもかかわらず既にトレイにアイコンが15個ぐらい並んでるからです。 というかこちらこそ最近出しゃばり過ぎてスマソ gdi0018 (0017+version+allgdi) http //free.flop.jp/gdi++/src/gdi0018.zip 881 名前:名無し~3.EXE 2006/09/27(水) 19 26 38 ID C9KiwGRj とりあえずallgdi適用可能になった(と思う) 869 実態は 869(gdi0017)に 654の差分を追加しただけなんで整合性が非常に妖しいです できれば理解してる方に修正してもらいたい 654 名前:名無し~3.EXE 2006/09/26(火) 22 02 26 ID BnjtjUIR http //www.uploda.org/uporg528876.zip.html pass gdi allgdi.exeを実行すると起動中の全プロセスにgdi++.dllが読み込まれる。 allgdi.exe -pで常駐モード。(終了はタスクマネージャで) 結構定期的に出てそうな要望なので試しに作ってみた。 gdi0017 (gdi0004lzh+individualセクション有効化) http //free.flop.jp/gdi++/src/gdi0017.lzh 869 名前:801 2006/09/27(水) 18 48 09 ID UQWYzagB 833(gdi0012)さんのIndividualセクション設定の部分をポーティングしてみました。 今回もSSE2+Pentium4向けに最適化してます。 とりあえずポーティングしてみたものの見やすくなってるんだろうか。。。 失敗してるかも? gdi0016 (ICC9.1にてPGO付きビルドSSE2/Pentium4向け) http //free.flop.jp/gdi++/src/gdi0016.lzh 698 名前:名無し~3.EXE 2006/09/26(火) 23 37 27 ID RFsWnBd0 今回は、SSE2+PGOでビルドしてみました。SSE2を持っているプロセッサで動くと思います。 エンハンスフィルタも取り込んでおきました [General] Quality=3 Weight=0 Enhance=1 MaxHeight=0 UseSubpixel=0 SubpixelDirection=0 ForceAntialiasedQuality=1 iniはこんな感じの設定で、firefoxで多少ブラウジングしてみただけですが どれくらい速くなったのかわかりません 最適化ビルド好きなあなたへ。 buildlog.htmは好き者用です gdi0012 (フォントごとにウェイト指定) http //free.flop.jp/gdi++/src/gdi0012.zip 833 名前:名無し~3.EXE 2006/09/27(水) 16 44 08 ID HJorFkvP MSゴシックに比べてMS明朝が薄くて困ってたので、 フォントごとにウェイト指定できるようにしてみました。 しょぼくてすまん。 最近、話題が高度でついて行けません( A`) gdi0011 (デバッグビルド) http //free.flop.jp/gdi++/src/gdi0011.lzh 829 名前:801 2006/09/27(水) 16 36 02 ID UQWYzagB 819 すでに何かのアプリがgdi++.dll使ってて上書きできないとか言う話でもないよね? とりあえず、デバッグビルドつくってみました。最適化なんぞ一切かかっていません。 すごい遅くても、これ無事に起動する? リネームしてないんで自力でgdi++.dllにしてからよろり gdi0009 (PentiumM(Banias or later)) http //free.flop.jp/gdi++/src/gdi0009.lzh 816 名前:801 2006/09/27(水) 16 21 34 ID UQWYzagB 814 ファイル壊れてるなら他の人も使えないだろうし・・・なんでだろう。 とりあえずPentiumM(baniasかそれ以降用)向けにビルドし直してみた。 PGOはプロセッサ持ってないからかけれなかったけども。 819 名前:名無し~3.EXE 2006/09/27(水) 16 24 06 ID NdJgLUsq 816 やっぱダメでごんす・・・ gdi0004 (sse2/pentium4用に最適化したもの) http //free.flop.jp/gdi++/src/gdi0004.lzh 801 名前:名無し~3.EXE 2006/09/27(水) 15 17 51 ID UQWYzagB 最適化ビルドです。784のソースに新エンハンサーをポーティングしてみました。 なんか、新エンハンサーって一定の幅以下の文字の描画の時におかしくなります? ちらしのうら const staticじゃなくてstatic constだとおもうんd /ちらしのうら 805 名前:名無し~3.EXE 2006/09/27(水) 15 59 25 ID 6BLvjhDr 801 Xp SP2 + IE7RC1では発生しないね http //free.flop.jp/gdi++/src/gdi0008.png IE7RC Enhance の設定をしても落ちないので助かったよ 808 名前:名無し~3.EXE 2006/09/27(水) 16 10 01 ID NdJgLUsq 801 PentiumMマシンでだとGDI++.DLLがロードできないと言われるんだけど 814 名前:名無し~3.EXE 2006/09/27(水) 16 19 50 ID NdJgLUsq PenitumM745(Dothan)でMMX,SSE,SSE2対応でした。 なんでだめなんだろう・・・ gdi++20060927-enhance (フィルタ修正版) http //khdd.net/kanou/kangae/2006/gdi++20060927-enhance.zip 790 名前:672 2006/09/27(水) 12 42 30 ID hbbR6JaG フィルタ修正版を作ったよ。 変更点 リンギング防止 Enhance の設定できる値を0~8に増やした。 16ピクセル超で一段階弱く、32ピクセル超でエフェクトオフ。 グレーアウトのテキストも許容範囲内になったようです。 ソースは 698 さんのバージョンを元にしました。 698 名前:名無し~3.EXE 2006/09/26(火) 23 37 27 ID RFsWnBd0 http //www.uploda.org/uporg529021.lzh.html pass gdi 今回は、SSE2+PGOでビルドしてみました。SSE2を持っているプロセッサで動くと思います。 エンハンスフィルタも取り込んでおきました。 795 名前:名無し~3.EXE 2006/09/27(水) 12 54 21 ID YoS2OVs9 790 Enhance有効だと、こんな風に色が変わります…。 http //free.flop.jp/gdi++/src/gdi0002.png アイコン icon http //free.flop.jp/gdi++/src/gdi0089.zip
https://w.atwiki.jp/gdiplus2/
Total・・・ - , today・・・ - , yesterday・・・ - , Since 2006.09.27 重要 gdi++シリーズの開発はすべて終了しました。今後このwikiの情報は更新されません。現在はInkStoneの開発に移行していますのでそちらをご覧ください。 このソフトの概要 gdi++.dll は、 Windows の gdi32.dll に代わってフォントのレンダリングを行い、これまでになく美しいスクリーンフォントを実現するオープンソースのソフトウェアです。 表示サンプルgdi++.dll(FreeType版) gdi++.dll FreeType版 最終版は基本的にgdi++.dll(FreeType版)のバイナリの一番上のものになります。 詳細は 2ch windows板の gdi++.dll スレッドを各自で確認するように。 本家最終版 gdi++20060927(本家サイト) (派生版はgdi++.dllのバイナリを参照) 元開発スレ gdi++.dll 23px http //pc12.2ch.net/test/read.cgi/win/1258039028/ 関連ツールやアイコン Manager アイコン テンプレ 美しく、力強く、鮮やかに。 新たなスクリーンフォントの世界を体験してみませんか。 従来のフォントレンダラを大きく上回る描画性能を実現したgdi++のスレッドです。 gdi++.dll は Windows のグラフィック操作の中枢をつかさどる gdi32.dll をインターセプトし、 美しいスクリーンフォントを実現することができる 2ch 発祥のオープンソースソフトウェアです。 このソフトウェアはまだ開発段階のため、思わぬ不具合が起きる可能性があります。 定期的なバックアップと細心の注意を心がけ、自己責任でご使用してください。 ※バグ報告の三大注意事項 ①gdi++を使わない場合も試してください(gdi++以前の問題) ②使用OS・フォント・アプリを必ず書いてください(動作環境の問題) ③バグが発生するVer と 発生しないVer とを書いてください(gdi++の問題) ※FT版はfreetype.dllのVerも添えてください(CVSならビルド日時も、CVSサポートしきれるか知らんけど)。 gdi++.dll公式ページ 作者:◆0x0D/0x20I 氏、460氏ほか http //drwatson.nobody.jp/gdi++/ まとめ Wiki http //www18.atwiki.jp/gdiplus2/ http //www.wikiroom.com/windows/?gdi++.dll GDI++専用 Uploader http //free.flop.jp/gdi++/ 過去スレッド 【美しく】gdi++.dll スレッド【鮮やかに】 http //pc8.2ch.net/test/read.cgi/win/1158937333/ 【美しく】gdi++.dll スレッド 2pt【鮮やかに】 http //pc8.2ch.net/test/read.cgi/win/115371166/ gdi++.dll 3px http //pc8.2ch.net/test/read.cgi/win/116017448/ gdi++.dll 4px http //pc8.2ch.net/test/read.cgi/win/116385942/ gdi++.dll quality=5 http //pc10.2ch.net/test/read.cgi/win/116513735/ gdi++.dll 6px http //pc11.2ch.net/test/read.cgi/win/116878397/ gdi++.dll 7px http //pc11.2ch.net/test/read.cgi/win/117335550/ gdi++.dll 8px http //pc11.2ch.net/test/read.cgi/win/117590710/ gdi++.dll 8px ←(9px) http //pc11.2ch.net/test/read.cgi/win/117606198/ gdi++.dll 9px ←(10px) http //pc11.2ch.net/test/read.cgi/win/11907576/ gdi++.dll 11px http //pc11.2ch.net/test/read.cgi/win/119264107/ gdi++.dll 11px ←(12px) http //pc11.2ch.net/test/read.cgi/win/119267554/ gdi++.dll 13px http //pc11.2ch.net/test/read.cgi/win/1197835853/ gdi++.dll 14px http //pc11.2ch.net/test/read.cgi/win/1201705828/ gdi++.dll 15px http //pc11.2ch.net/test/read.cgi/win/1206088597/ gdi++.dll 16px http //pc11.2ch.net/test/read.cgi/win/1209831471/ gdi++.dll 17px http //pc11.2ch.net/test/read.cgi/win/1210418630/ 紹介 窓の杜 - 【NEWS】指定したアプリ上であらゆるフォントの描画をなめらかにする「gdi++.dll」 http //www.forest.impress.co.jp/article/2006/09/21/gdiplusplus.html スラッシュドット ジャパン | Windowsで綺麗なフォントレンダリングを実現する「gdi++.dll」 http //slashdot.jp/developers/article.pl?sid=06/09/21/1617251 どんなツールでもフォントをキレイにして実行する「gdi++.dll」 にゅーあきばどっとこむ http //www.newakiba.com/archives/2006/09/gdidll.html hail2u.net - Weblog - gdi++.dll http //hail2u.net/blog/software/gdiplusplus.html 平林 純@「hirax.net」の科学と技術と男と女/Tech総研:「綺麗なフォントレンダリング」と「想定ユーザ」 http //blog-tech.riknabi-next.yahoo.co.jp/blog/hirabayasi/131 Re [ft] gdi hack with freetype http //list.gnu.org/archive/html/freetype/2006-12/msg0032.html 【視認性チェック (1)】 |||| | |!|"|#|$|%| | |(|)|*|+|,|-|.|/|0|1|2|3|4|5|6|7|8|9| |;| |=| |?|@|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O| |P|Q|R|S|T|U|V|W|X|Y|Z|[|\|]|^|_|`|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|{|||}|~| |。|「|」|、|・|ヲ|ァ|ィ|ゥ|ェ|ォ|ャ|ュ|ョ|ッ|ー|ア|イ|ウ|エ|オ|カ|キ|ク|ケ|コ|サ|シ|ス|セ|ソ|タ|チ|ツ|テ|ト|ナ|ニ|ヌ|ネ|ノ|ハ|ヒ|フ|ヘ|ホ|マ|ミ| |ム|メ|モ|ヤ|ユ|ヨ|ラ|リ|ル|レ|ロ|ワ|ン|゙|゚| | |、|。|,|.|・|:|;|?|!|゛|゜|´|`|¨|^| ̄|_|ヽ|ヾ|ゝ|ゞ|〃|仝|々|〆|〇|ー|―|‐|/|\| |~|∥|||…|‥|‘|’|“|”|(|)|〔|〕|[|]|{|}|〈|〉|《|》|「|」|『|』|【|】|+|-|±|×| |÷|=|≠|<|>|≦|≧|∞|∴|♂|♀|°|′|″|℃|¥|$|¢|£|%|#|&|*|@|§|☆|★|○|●|◎|◇|◆| |□|■|△|▲|▽|▼|※|〒|→|←|↑|↓|〓|∈|∋|⊆|⊇|⊂|⊃|∪|∩|∧|∨|¬|⇒|⇔|∀|∃|∠|⊥|⌒|∂| |∇|≡|≒|≪|≫|√|∽|∝|∫|∬|Å|‰|♯|♭|♪|†|‡|◯| |0|1|2|3|4|5|6|7|8|9|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V| |W|X|Y|Z|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z| |ぁ|あ|ぃ|い|ぅ|う|ぇ|え|ぉ|お|か|が|き|ぎ|く|ぐ|け|げ|こ|ご|さ|ざ|し|じ|す|ず|せ|ぜ|そ|ぞ|た|だ|ち| |ぢ|っ|つ|づ|て|で|と|ど|な|に|ぬ|ね|の|は|ば|ぱ|ひ|び|ぴ|ふ|ぶ|ぷ|へ|べ|ぺ|ほ|ぼ|ぽ|ま|み|む|め| |も|ゃ|や|ゅ|ゆ|ょ|よ|ら|り|る|れ|ろ|ゎ|わ|ゐ|ゑ|を|ん| |ァ|ア|ィ|イ|ゥ|ウ|ェ|エ|ォ|オ|カ|ガ|キ|ギ|ク|グ|ケ|ゲ|コ|ゴ|サ|ザ|シ|ジ|ス|ズ|セ|ゼ|ソ|ゾ|タ|ダ| |チ|ヂ|ッ|ツ|ヅ|テ|デ|ト|ド|ナ|ニ|ヌ|ネ|ノ|ハ|バ|パ|ヒ|ビ|ピ|フ|ブ|プ|ヘ|ベ|ペ|ホ|ボ|ポ|マ|ミ|ム| |メ|モ|ャ|ヤ|ュ|ユ|ョ|ヨ|ラ|リ|ル|レ|ロ|ヮ|ワ|ヰ|ヱ|ヲ|ン|ヴ|ヵ|ヶ|─|│|┌|┐|┘|└|├|┬|┤| |┴|┼|━|┃|┏|┓|┛|┗|┣|┳|┫|┻|╋|┠|┯|┨|┷|┿|┝|┰|┥|┸|╂|①|②|③|④|⑤|⑥|⑦|⑧|⑨| |⑩|⑪|⑫|⑬|⑭|⑮|⑯|⑰|⑱|⑲|⑳|Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|㍉|㌔|㌢|㍍|㌘|㌧|㌃|㌶|㍑|㍗|㌍| |㌦|㌣|㌫|㍊|㌻|㎜|㎝|㎞|㎎|㎏|㏄|㎡|㍻|〝|〟|№|㏍|℡|㊤|㊥|㊦|㊧|㊨|㈱|㈲|㈹|㍾|㍽|㍼|≒|≡|∫| |∑|√|⊥|∟|⊿|∵|∩|∪| 【視認性チェック (2)】 |___________________________________________________________ |ABCDEFGHIJKLMNOPQRSTUVWXYZ |abcdefghijklmnopqrstuvwxyz |0123456789O1234567890I123456789 |!"#$% ()=-@+ ;,. _{}[]~| |aceimnorsuvwxz bdfhjklpqty |----------------------------------------------------------- |aaa aca aea aia ama ana aoa ara asa ata aua ava awa axa aza |bab bcb beb bib bmb bnb bob brb bsb btb bub bvb bwb bxb bzb |cac ccc cec cic cmc cnc coc crc csc ctc cuc cvc cwc cxc czc |eae ece eee eie eme ene eoe ere ese ete eue eve ewe exe eze |iai ici iei iii imi ini ioi iri isi iti iui ivi iwi ixi izi |mam mcm mem mim mmm mnm mom mrm msm mtm mum mvm mwm mxm mzm |nan ncn nen nin nmn nnn non nrn nsn ntn nun nvn nwn nxn nzn |oao oco oeo oio omo ono ooo oro oso oto ouo ovo owo oxo ozo |rar rcr rer rir rmr rnr ror rrr rsr rtr rur rvr rwr rxr rzr |sas scs ses sis sms sns sos srs sss sts sus svs sws sxs szs |uau ucu ueu uiu umu unu uou uru usu utu uuu uvu uwu uxu uzu |vav vcv vev viv vmv vnv vov vrv vsv vtv vuv vvv vwv vxv vzv |xax xcx xex xix xmx xnx xox xrx xsx xtx xux xvx xwx xxx xzx |zaz zcz zez ziz zmz znz zoz zrz zsz ztz zuz zvz zwz zxz zzz |=========================================================== |----+----+----+----+----+====+----+====+----+=-=-=-=-=-=-=- 【視認性チェック (3)】 |-|‐|ー|-|ー|一|―|─|━| |=|=|ニ|ニ|二|〓| |≡|Ξ|三| |+|+|十|┼|┿|╂|╋|†| |∇|▽| |.|.|・|・| |..|..|・・|・・|‥| |...|...|・・・|・・・|…| |。|。|o|o|0|0|O|O|〇|○|◯| |||1|1|I|I|l|l|Ⅰ|│|┃| |i|i|j|j|ⅰ| |L|L|∟| |U|U|∪| |v|v|ⅴ|V|V|Ⅴ|∨| |w|vv|w|vv|W|VV|W|VV| |x|x|ⅹ|X|X|Ⅹ|×| |iii|ⅲ|vii|ⅶ|ix|ⅸ|III|Ⅲ|VII|Ⅶ|IX|Ⅸ| | |<|く| |ェ|ェ|エ|エ|工| |コ|コ|]|]| |チ|チ|千| |テ|テ|〒| |ハ|ハ|八| |ヘ|ヘ|へ| |ロ|ロ|口|□| |ョ|ョ|ヨ|ヨ|∃|3|3|∋| 【視認性チェック (4、難読漢字)】 ○第一水準 ■員鴛夏駕鴬嘉夏寡馨劃獲橿 撞瞳童篤毒曇嚢膿農輩買薄曝 竃慣環贋喜貴亀虐彊蕎響驚薫 爆縛肇髪繁藩費鼻賓富膚葺覆 慶警撃憲賢碁膏轟債鷺纂讃賛 奮糞雰弊瞥箆募墓慕暮簿烹豊 餐暫資事璽襲讐署書薯償嘗菖 鳳帽房墨摩磨魔幕慢漫蔓霧鵡 賞醤醸腎誓青責蹟薦遷叢倉層 蒙貰鑓癒優憂誉傭庸養翼欄藍 曹槽漕蒼遭尊鷹奪壇檀置寵賃 蘭覧裏慮虜糧量零霊櫓露婁篭 漬蔦堤鄭填電董蕩謄騰闘導憧 聾鷲藁〓〓〓〓〓〓〓〓〓〓 ○第二水準 僂僖價僵儂儔儼儻冀冑冓冕冪 蓴蔔蕘蕈蘂薈薑薨蕭薔薛藪蕾 凛勸匱厦簒曼燮單嗄嗜嗔嘖噎 薐薺薹藝藹藾藺蘆蘢蘰蘿蠣蟾 營嚆嚊嚔嚏嚴囂嚼囁囈囎囑囓 蠖蠢蠡蠱蠶蠹蠧蠻袤裹褄襃襄 圓團圖圜墅墫墮壓壜壤壟壹壼 褻褸覈覺覽覿詈謇謦譫譽讀讒 壽夐奠寢寞寰寶寳巉巖廈廛廩 貲貳賈賣賚賽贄贅贊贇贏贍齎 廬彙悳恚惷慝慵憙憬憊懃憺懍 贔贖躔躪輦轂邊邉扈醫醺釁釐 懼懾戛戲拿擔掣搴搆攝摯摶攪 鏨鐔鑢鑪钁鑿閹闃闍闔闖闡闥 擒擅擘擧舉擠擡擣擯攬擶擴擲 隲霓霎霏霙霤霪霰霽霾靄靆靈 擺攀擽攘攜攅攤攣攫數晝晨暈 靂靠靨鞏齏顫顰餮饕駑驀驢驥 曁暹霸梟檮棊樌橲檐檳檬櫑蘖 驤驩驫驪髏髑髓體髴鬘鬚鬟鬢 欖鬱殯滬濾瀛瀘熏燻熹爐爨牘 鬣鬮魍魘鯊鰲鱚鱠鱧鱶鱸鳧鳬 犢犧獸獻瓊甕甓畧畫疆疊疉疂 鴦鶯鶩鶺鷆鷏鷙鷸鷽鸞麈麋麌 瘍瘧瘡瘰瘻癘癢癨癩癪盧蘯眞 麕麑麝黌黨黶黷鼇鼈鼕齧龕龜 睿瞽瞻矍矗矚礦礪磚稟禀稾窘 龠褜兤厲甯寘寬嶹巐暿曺渹濵 竈窰窶竅竇篝簑簔籠簀篳簍篶 瀇燾罇蕓蕙蕫薰蘒詹誾譿贒遧 簣簧簪簟簷簫籌籔籤籖籥籬粤 鏆鏞鏸隯霳霻靃靍靏纊褜兤厲 鬻纜罌罍罎羃羣羲羹羮羶羸譱 寘寬嶹巐暠曺渹濵瀇燾獷璟蕓 耆耄耋聟聶胄脣膽臀膺臚臺舅 蕙蕫薰蘒詹誾譓譿贒遧〓〓〓 舊艫菁菷萇萼蕚葷蒹蒿蓍蓐蓁 〓〓〓〓〓〓〓〓〓〓〓〓■ 【視認性チェック (5、旧漢字単語)】 參拜 滿州 萬歳 亞細亞 英靈 劍道 稻穗の國 鬪う 野蠻 南蠻 兩國 學徒 歐州 獻身 獻上 玉碎 國粹 鎭魂 讀賣 會社 惡戲 擬古侍樣 臺灣 國の爲 單一民族 英靈の聲 將軍 經營學 螢 ○○縣護國神社 巖格 單一民族 九段下驛 人權 氣志團 特攻觀音 釋 大東亞共榮圈 擧國 從軍 國體 曉に 員數主義 實踐 日本對北朝鮮 日本男兒 戀文 懷古 歡喜 壞滅 自民黨 與黨 屬國 同期の櫻 齡 名譽 鐵人 心醉 勳陶 繼承 地圖 應仁の亂 防衞廳 發言 拔刀隊 斷行 移轉 近衞師團 觸發 亞麻色髮 豐穰の海 日本語譯 よど號 豫告 彈丸 專攻 變人 經験 【視認性チェック (6、心経)】 般若波羅蜜多心経 観自在菩薩行深般若波羅蜜多時照見五 蘊皆空度一切苦厄舎利子色不異空空不 異色色即是空空即是色受想行識亦復如 是舎利子是諸法空相不生不滅不垢不浄 不増不減是故空中無色無受想行識無眼 耳鼻舌身意無色聲香味觸法無眼界乃至 無意識界無無明亦無無明尽乃至無老死 亦無老死尽無苦集滅道無智亦無得以無 所得故菩提薩垂依般若波羅蜜多故心無 罫礙無罫礙故無有恐怖遠離一切顛倒夢 想究竟涅槃三世諸仏依般若波羅蜜多故 得阿耨多羅三藐三菩提故知般若波羅蜜 多是大神咒是大明咒是無上咒是無等等 咒能除一切苦真実不虚故説般若波羅蜜 多咒即説咒 羯諦羯諦波羅羯諦波羅僧羯諦菩提薩婆訶 般若心経 仏説摩訶般若波羅蜜多心経観自在菩薩行深般若波羅蜜多時照見五蘊皆空度一 切苦厄舎利子色不異空空不異色色即是空空即是色受想行識亦復如是舎利子是 諸法空相不生不滅不垢不浄不増不減是故空中無色無受想行識無眼耳鼻舌身意 無色声香味触法無眼界乃至無意識界無無明亦無無明尽乃至無老死亦無老死尽 無苦集滅道無智亦無得以無所得故菩提薩捶依般若波羅蜜多故心無罫礙無罫礙 故無有恐怖遠離一切顛倒夢想究竟涅槃三世諸仏依般若波羅蜜多故得阿耨多羅 三貌三菩提故知般若波羅蜜多是大神呪是大明呪是無上呪是無等等呪能除一切 苦真実不虚故説般若波羅蜜多呪即説呪曰羯諦羯諦波羅羯諦波羅僧羯諦菩提薩 婆訶般若心経 【にじみチェック (パイプ)】 llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
https://w.atwiki.jp/gdiplusplus/pages/49.html
gdi++.dll(Helium版) -スパゲッティコードからの脱却、高速化、そして新たなる高みへ- gdi++.dll(Helium版)概要作者 最新版 名前について 表示例 注意 基本的な使い方 FAQ、未解決の問題 その他(内容が古いかも) 概要 以下は付属マニュアル(gdi++.htm)からのコピペです。 コアエンジン (Helium と呼ぶ事にする) をフルスクラッチした gdi++ です。 具体的には…… SourceMonitor で Max Complexity が 30 以下になりました。 FreeType 内蔵キャッシュの使用を廃止し、独自のキャッシュシステムを使用することでメモリ消費量を削減しました。 MS Pゴシックなどの太字やイタリック体をエミュレートしているフォントで FontStream を多重に確保しないようにしました。 文字の描画に必要な API のみをフックし、その他は GDI の結果をそのまま使うようにしました。 マルチスレッドからの非同期アクセスに対する安定性が大幅に向上しました。 「一応0789(0577)ベースですが、もはやソースレベルでは別物」だそうです。 作者 gdi++9px(実質10px)740氏(コテ、トリップなし) 最新版 配布サイトはこちら。 名前について 表記 Helium版、Helium、ヘリウム、He版とか。決してヒーリウムではない。 名前変更の理由 ソースが前のバージョンとはもはや別物になってしまったから。 名前の由来 憶測で書いてますが・・・ 斧にアップしてたときファイル名の先頭にHe_がついてたから(Heはヘリウムの元素記号) 軽いから(ヘリウムは水素に次いで軽い) 安定してるから(ヘリウムはもっとも安定した分子) 表示例 gdi++うpろだEX(テスト版やiniうp、SS晒しとか)へGO! 注意 実験版ですので必ず付属マニュアル(gdi++htm)を読んでから使うように。 SSE2対応CPU(Pentium 4、Pentium M、Athlon64 以降の CPU)で動作します。 Windows XP SP3 以外での動作は保証しません。64 ビット版OSでの動作も保証しません freetype.dllは必ず Helium版と一緒に配布されているもの(dll.zipに同梱)を使用して下さい。 重大な欠陥が見つかった場合は予告無しに削除されるかもしれません。再配布・転載などはしないで下さい。 ネトラン厨お断り 基本的な使い方 Helium版の使い方はgdi++(FreeType)と同じですが、iniファイルのオプションが若干異なります。これについては付属マニュアル(gdi++.htm)が非常に丁寧なので、そちらを見て下さい。 ここではGdiTray(gdi++.dll を全プロセスに対して適用させるソフト)の使い方について述べます。 注 基本的なPCの操作、解凍の方法、iniファイルの書き方は理解しているものとします。 gdi++Helium版、動作に必要なDLL及びGdiTrayを配布サイトからDLし、全て同じフォルダに展開する。 付属マニュアル(gdi++.htm及びgditray.htm)を熟読する。 ファイル群を展開したフォルダにgdi++.iniを作成し、マニュアルに記載されたGdiTrayのiniファイルの内容を書く。 MultiINISelector=1の場合はiniフォルダを作成しそのフォルダ内に作成したiniファイルに、MultiINISelector=0の場合はgdi++.iniの続きにマニュアルに記載されたgdi++本体のiniファイルの内容を書く。 gditray.exeを起動。スタートアップにショートカットを作ればWindows起動時に自動で起動できます。 FAQ、未解決の問題 うちの CPU、SSE2 に対応してないんですけど・・・→ 頻繁に呼ばれる部分を随時 SIMD 化しているので、もう対応できません。ごめんなさい。 古いPCだからこそ軽いバージョン使いたいのがわからないのか!→ SSE2に特化することで軽くしてるんだから、諦めて0787でも使って下さい。 ソース無いんだが→ ライセンスでグレーなところがあるかもしれないようで現在調査中のためソースは同梱されていません。 もっとちゃんとした使い方のマニュアルみたいなのはないの? 画像入りで分かりやすいやつ。→ もし良ければ書いて下さい。嫌なら親切な人が書いてくれるのを待って下さい。書く気はあるけど一人で全部書けないなら中途半端でもwikiに書くと誰か書き足してくれるかも。 全適用したい→ 下のFAQにある方法を使うか、上のGdiTrayを使って下さい。 ○○○が落ちる→ freetype.dllのバージョンは正しいですか? HDDに前のが残ってることもありうるので検索してみて下さい。もし正しければ開発スレに報告して下さい。OS、gdi++のバージョン、落ちるアプリケーション、CPU、メモリを明記すること。またフォント変えたら問題ない場合とかはフォントも。 その他(内容が古いかも) FAQ Tips
https://w.atwiki.jp/miracle_mikuru/pages/32.html
http //www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html http //www.atmarkit.co.jp/fdotnet/dotnettips/025w32string/w32string.html http //www.atmarkit.co.jp/fdotnet/dotnettips/026w32struct/w32struct.html ・Win32APIを呼び出す DllImport属性(System.Runtime.InteropServices名前空間)で関数をエクスポートしているDLLのファイル名を指定 宣言にextern staticを付ける アクセス修飾子(private/public)は自由に付けられる C#ではヘッダファイルを扱うことができないため、 必要に応じて定数を自分で定義しなければならない。 .NET Frameworkの内部では文字列をUnicodeで処理しているが、 Win32 APIやDLL関数に文字列を渡す場合は、デフォルトでANSI文字セットによる表現に変換される。 Unicode版を使用する場合は、DllImport属性のCharSetフィールドにCharSet.Unicodeを指定する CharSet列挙型(System.Runtime.InteropServices名前空間) ----------------------------------------------------------- ・例 // Win32 API // インポートライブラリ kernel32.lib BOOL Beep(DWORD dwFreq, DWORD dwDuration); ↓ [DllImport("kernel32.dll")] extern static bool Beep(uint dwFreq, uint dwDuration); ----------------------------------------------------------- ・引数に値が返される // Win32 API // インポートライブラリ kernel32.lib BOOL GetNumberOfConsoleMouseButtons(LPDWORD lpNumberOfMouseButtons); ↓ [DllImport("kernel32.dll")] extern static bool GetNumberOfConsoleMouseButtons(ref uint lpNumberOfMouseButtons); ----------------------------------------------------------- ・定数を引数にとる(1) // Win32 API // インポートライブラリ kernel32.lib #define PF_FLOATING_POINT_PRECISION_ERRATA 0 #define PF_FLOATING_POINT_EMULATED 1 #define PF_COMPARE_EXCHANGE_DOUBLE 2 #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 #define PF_PPC_MOVEMEM_64BIT_OK 4 #define PF_ALPHA_BYTE_INSTRUCTIONS 5 #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 #define PF_RDTSC_INSTRUCTION_AVAILABLE 8 #define PF_PAE_ENABLED 9 #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 BOOL IsProcessorFeaturePresent(DWORD ProcessorFeature); ↓ enum ProcessorFeatures uint { PF_FLOATING_POINT_PRECISION_ERRATA = 0, PF_FLOATING_POINT_EMULATED = 1, PF_COMPARE_EXCHANGE_DOUBLE = 2, PF_MMX_INSTRUCTIONS_AVAILABLE = 3, PF_PPC_MOVEMEM_64BIT_OK = 4, PF_ALPHA_BYTE_INSTRUCTIONS = 5, PF_XMMI_INSTRUCTIONS_AVAILABLE = 6, PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7, PF_RDTSC_INSTRUCTION_AVAILABLE = 8, PF_PAE_ENABLED = 9, PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10 } [DllImport("kernel32.dll")] extern static bool IsProcessorFeaturePresent(ProcessorFeatures ProcessorFeature); ----------------------------------------------------------- ・文字列を引数にとる(MBCS) BOOL SetConsoleTitleA( LPCSTR lpConsoleTitle ); ↓ [DllImport("kernel32.dll")] static extern bool SetConsoleTitleA(string lpConsoleTitle); or [DllImport("kernel32.dll")] static extern bool SetConsoleTitle(string lpConsoleTitle); ----------------------------------------------------------- ・文字列を引数にとる(UNICODE) BOOL SetConsoleTitleW( LPCWSTR lpConsoleTitle ); ↓ [DllImport("kernel32.dll", CharSet=CharSet.Unicode)] static extern bool SetConsoleTitleW(string lpConsoleTitle); or [DllImport("kernel32.dll", CharSet=CharSet.Unicode)] static extern bool SetConsoleTitle(string lpConsoleTitle); ----------------------------------------------------------- ・文字列を引数にとる(MBCS/UNICODE) BOOL SetConsoleTitle( LPCTSTR lpConsoleTitle ); ↓ [DllImport("kernel32.dll", CharSet=CharSet.Auto)] extern static bool SetConsoleTitle(string lpConsoleTitle); ----------------------------------------------------------- ・構造体を引数にとる .NET Frameworkでは、通常、アクセスに最適な配置となるように、 CLRがメモリ上における構造体の各メンバの配置を決定する。 つまり、単純に同じ構造体をC#などで宣言しただけでは、 各メンバのオフセットをDLL側と確実に一致させることは不可能である。 Win32 APIやDLL関数に渡す構造体を定義する場合は、そのメンバの配置方法を変更する必要がある。 構造体に対してStructLayout属性(System.Runtime.InteropServices名前空間)を設定する。 配置方法としてLayoutKind列挙体(System.Runtime.InteropServices名前空間)を指定する。 C言語などの構造体と同様に、メンバが宣言された順に配置されるようにするには、 LayoutKind.Sequentialという値を指定する。 フィールドのスコープはすべてpublicにしておかなければならない。 フィールドを宣言する順序は、元のC言語での定義と完全に一致させる必要がある。 typedef struct tagPOINT { LONG x; LONG y; } POINT; ↓ [StructLayout(LayoutKind.Sequential)] struct POINT { public int x; public int y; } ----------------------------------------------------------- APIでの型名対応するC#の型 HANDLE (void *)System.IntPtr BYTE (unsigned char)byte (System.Byte) SHORT (short)short (System.Int16) WORD (unsigned short)ushort (System.UInt16) INT (int)int (System.Int32) LONG (long)int (System.Int32) UINT (unsigned int)uint (System.UInt32) DWORD (unsigned long)uint (System.UInt32) ULONG (unsigned long)uint (System.UInt32) BOOL (long)bool (System.Boolean) CHAR (char)char (System.Char) LPSTR (char *)System.Text.StringBuilder LPWSTR (wchar_t *)System.Text.StringBuilder LPCSTR (const char *)string (System.String) LPCWSTR (const wchar_t *)string (System.String) FLOAT (float)float (System.Single) DOUBLE (double)double (System.Double) WindowsのDLL(Win32 API)と.NET Frameworkとでは型の管理方法が違うため、 実際には型の相互変換(マーシャリング)が行われる -----------------------------------------------------------
https://w.atwiki.jp/atachi/pages/72.html
基本設計 [#pf5c193e] 型変換ルール [#r4ca7b8a] DLLの遅延ロードのサンプルコード [#i2b73562] 基本設計 C++やその他の言語で作成されたDLLは、CLIによる実装ではない(アンマネージドDLL)です。 DllImport属性を使ってインポートするDLLを選ぶ。シグネチャはAPIのリファレンスマニュアルを参考してください。 WindowsAPIで使用されている型とC#での型の対応表は次の項目を参照してください。 [DllImport("user32.dll")] extern static int GetWindowText(IntPtr hWnd,StringBuilder lpStr,int nMaxCount); 型変換ルール WindowsAPIの型名 C#および.NETの型名 Windows API C C# プリミティブ .NET Framework HWND void * → System.IntPtr WPARAM unsigned int uint System.UInt32 LPARAM long int System.Int32 LRESULT long int System.Int32 HANDLE void * → System.IntPtr BYTE unsigned char byte System.Byte SHORT short short System.Int16 WORD unsigned short ushort System.UInt16 INT int int System.Int32 LONG long UINT unsigned int uint System.UInt32 DWORD unsigned long ULONG unsigned long BOOL int bool System.Boolean CHAR char char System.Char LPSTR char * → System.Text.StringBuilder LPWSTR wchar_t * LPCSTR const char * string System.String LPCWSTR const wchar_t * FLOAT float float System.Single DOUBLE double double System.Double DLLの遅延ロードのサンプルコード using System; using System.Runtime.InteropServices; public class UnManagedDll IDisposable { [DllImport("kernel32")] static extern IntPtr LoadLibrary(string lpFileName); [DllImport("kernel32")] static extern IntPtr GetProcAddress(IntPtr hModule, string lpProcName); [DllImport("kernel32")] static extern bool FreeLibrary(IntPtr hModule); IntPtr moduleHandle; public UnManagedDll(string lpFileName) { moduleHandle = LoadLibrary(lpFileName); } public IntPtr ModuleHandle { get { return moduleHandle; } } public T GetProcDelegate T (string method) where T class { IntPtr methodHandle = GetProcAddress(moduleHandle, method); T r = Marshal.GetDelegateForFunctionPointer(methodHandle, typeof(T)) as T; return r; } public void Dispose() { FreeLibrary(moduleHandle); } } 次のように呼び出して使用する。 using System; class Program { delegate int MessageBoxADelegate(IntPtr hWnd, string lpText, string lpCaption, uint uType); static void Main(string[] args) { using(UnManagedDll user32Dll = new UnManagedDll("user32.dll")) { MessageBoxADelegate MessageBoxA = user32Dll.GetProcDelegate MessageBoxADelegate ("MessageBoxA"); MessageBoxA(IntPtr.Zero, "テキスト", "キャプション", 0); } } }
https://w.atwiki.jp/scclassdoc/pages/26.html
アセンブリと DLL の名前 アセンブリとは、マネージ コード プログラムの開発単位を意味している。 アセンブリは複数の DLL に分割することもできるが、通常、アセンブリは DLL と一対一で対応させる。 このセクションでは、アセンブリと DLL を一つのものとして、その命名ガイドラインを説明する。 ✓ アセンブリと DLL の名前には、大きな機能のまとまりを意味する言葉を選択しよう。 たとえば、System.Data などとする。 ✓ アセンブリと DLL の名前は、必ずしも名前空間に対応させる必要はない。しかし、名前空間をベースにした名前を付けるのは合理的だ。 経験則に従えば、アセンブリに含まれる名前空間の共通のプレフィックス部分をアセンブリと DLL の名前とするのが良いようだ。 たとえば、名前空間 MyCompany.MyTechnology.FirstFeature と MyCompany.MyTechnology.SecondFeature をもつアセンブリは MyCompany.MyTechnology.dll と名付けよう。 ✓ DLL の名前を次のパターンに従って決めることを検討しよう。 会社名.コンポーネント名.dll 次の例にはピリオドで区切られた 1つ以上の句が DLL の名前に含まれている。 Softcube.Utility.dll。
https://w.atwiki.jp/yonetti/pages/15.html
gfortranでDLL作成 gfortran --shared -o hoge.dll hoge.f90 でDLL作成 ちなみにDLLやEXEのチェックに Dependency Viewer http //homepage3.nifty.com/super-dacho/ というツールある subroutine plus(a,b,c) double precision,intent(in) a,b double precision,intent(out) c c=a+b end subroutine plus Rでplus.dllを使用したい場合 注意点:subroutineであること 引数の型は強制的に変換する事 dyn.load("plus.dll") plus - function(a,b){ .Fortran("plus", arg1=as.double(a), arg2=as.double(b), arg3=double(1) ) } 引数が行列の時は arg1=matrix(as.integer(a),nrow=2,ncol=2) 戻り値が行列の時は、 arg3=matrix(double(4),nrow=2,ncol=2) とでもする
https://w.atwiki.jp/jfactory/pages/26.html
DLLをいぢって見る DLLが見つからないときマネージアプリから、マネージDLLとアンマネージDLLを呼んでみる マネージアプリからマネージDLL(内部でアンマネージDLL呼んでいる)を呼んでみる DLLの動的リンク DLLが見つからないとき 結局、マネージDLL不在チェックの方法がない(今のところ見つけられない)ので、アンマネージDLLだけをLoadLibraryで明示的リンクしてエラーチェックしても仕方がないような気がします。 (2008.09 マネージDLLの動的リンクを見つけました こちら) マネージアプリから、マネージDLLとアンマネージDLLを呼んでみる マネージDLLは、プロジェクトプロパティで参照設定しておき、using namespace ...で呼べるようにしています。アンマネージDLLは、インポートライブラリを使用して、暗黙的リンクで使用しています。 マネージDLL(ManagedDLL.dll)が見つからないときは、以下のダイアログが出ます。なんのエラーが発生したのか不明な、意味のないダイアログです。 アンマネージDLL(UnmanagedDLL.dll)が見つからないときは、以下のダイアログが出ます。しかも、古いウィンドウ形式のダイアログが(笑 どちらも見つからないときは、アンマネージDLLのダイアログが出ます。 Test.cpp using namespace System; using namespace ManagedDLL; #include "UnmanagedDLL.h" int main(array System String ^ ^args) { Console WriteLine("Manamged Add(1,2) = "+ManagedDLL Lib Add(1,2) ); Console WriteLine("Unmanaged Sub(1,2) = "+ Sub(1,2) ); Console ReadLine(); return 0; } ManagedDLL.h #pragma once namespace ManagedDLL { public ref class Lib { public static int Add(int a, int b) { return a+b; } }; } ManagedDLL.cpp #include "ManagedDLL.h" #ifndef __UnmanagedDLL_h #define __UnmanagedDLL_h UnmanagedDLL.h #ifdef DLL_EXPORTS #define _EXPORT __declspec(dllexport) #else #define _EXPORT __declspec(dllimport) #endif #ifdef__cplusplus extern "C" { #endif _EXPORT int __stdcall Sub(int a, int b); #ifdef__cplusplus } #endif #endif // #ifndef __UnmanagedDLL_h UnmanagedDLL.cpp #include "windows.h" #define DLL_EXPORTS #include "UnmanagedDLL.h" BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; } _EXPORT int __stdcall Sub(int a, int b) { return a - b; } マネージアプリからマネージDLL(内部でアンマネージDLL呼んでいる)を呼んでみる マネージDLLは、プロジェクトプロパティで参照設定しておき、using namespace ...で呼べるようにしています。マネージDLLから呼んでいるアンマネージDLLは、インポートライブラリを使用して、暗黙的リンクで使用しています。 このパターンは、既存のライブラリをマネージコードで(特にC#/VBで)使用するための、もっとも多いパターンではないかと思われます。いまだにVC6のDLLしか用意されていないものも多数あり、それらを使用するためのラッパーとしての位置付けです。 マネージDLL(ManagedDLL.dll)が見つからないときは、以下のダイアログが出ます。なんのエラーが発生したのか不明な、意味のないダイアログです。アンマネージDLL(UnmanagedDLL.dll)が見つからないときも、同じダイアログが出ます。 Test.cpp using namespace System; using namespace ManagedDLL; int main(array System String ^ ^args) { Console WriteLine("Manamged Add(3,1) = " + ManagedDLL Lib Add(3,1) ); Console WriteLine("Manamged Sub(3,1) = " + ManagedDLL Lib Sub(3,1) ); Console ReadLine(); return 0; } ManagedDLL.h #pragma once #include "UnmanagedDLL.h" namespace ManagedDLL { public ref class Lib { public static int Add(int a, int b) { return a+b; } public static int Sub(int a, int b) { return Sub(a,b); } }; } ManagedDLL.cpp #include "ManagedDLL.h" UnmanagedDLL.h #ifdef DLL_EXPORTS #define _EXPORT __declspec(dllexport) #else #define _EXPORT __declspec(dllimport) #endif #ifdef__cplusplus extern "C" { #endif _EXPORT int __stdcall Sub(int a, int b); #ifdef__cplusplus } #endif #endif // #ifndef __UnmanagedDLL_h UnmanagedDLL.cpp #include "windows.h" #define DLL_EXPORTS #include "UnmanagedDLL.h" BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; } _EXPORT int __stdcall Sub(int a, int b) { return a - b; }
https://w.atwiki.jp/c0metssd/pages/131.html
プログラムメニューから、「Visual Studio 2013」→「Visual Studioツール」→「※」 ※環境にあったものを選択する 「VS2013 x64 Native Tools コマンド プロンプト」 プロンプトが開くので以下のコマンドを入力する dumpbin.exe /HEADERS DLL名 | findstr machine 64bitの場合 8664 machine (x64) 32bitの場合 14C machine (x86) 2015/12/09
https://w.atwiki.jp/scclassdoc/pages/20.html
アセンブリと Dll の名前 アセンブリは、配置とマネージ コード アプリケーションの id の単位です。 アセンブリは、1 つまたは複数のファイルにまたがることができます、通常このアセンブリは、DLL と一対一をマップします。 そのため、このセクションでは、のみ DLL の名前付け規則、その後、アセンブリの名前付け規則にマップできますがについて説明します。 ✓ DO System.Data などの機能の大きなチャンクを示す アセンブリDLL の名前を選択します。 アセンブリと DLL の名前、名前空間の名前に対応する必要はありませんが、アセンブリの名前を付けるときは、名前空間の名前を以下にすることができます。 適切な経験則では、アセンブリに含まれるアセンブリの共通のプレフィックスに基づいた DLL の名前です。 たとえば、2 つの名前空間を持つアセンブリ MyCompany.MyTechnology.FirstFeature と MyCompany.MyTechnology.SecondFeature, を呼び出す MyCompany.MyTechnology.dllします。 ✓ CONSIDER DLL を次のパターンに従って名前付けることを検討してください。 Company . Component .dll ここで Component にはピリオドで区切られた 1 以上の句が含まれます。 例 Litware.Controls.dll。